// 扫描器类
export default class Scanner{
    constructor(templateStr){
        this.templateStr = templateStr
        // 定义一个指针
        this.pos = 0
        // 尾巴，定义一个截取返回的字符串，剩下的字符串，一开始是所有的字符串
        this.tail = templateStr
    }
    // 跳过标记的字符串,将尾巴更新到{{后面的字符串
    scan(tag){
        if(this.tail.indexOf(tag)===0){
            this.pos +=tag.length
            this.tail = this.templateStr.substring(this.pos)
        }
    }
    // 遇到指定的字符串就停止，然后返回之前到停止的字符串
    scanUtil(stoTag){
        // 记录上一次停止的位置
        const pos_backUp = this.pos
        while(this.tail.indexOf(stoTag)!=0&&!this.eos()){
            this.pos++
            this.tail = this.templateStr.substring(this.pos)
        }
        return this.templateStr.substring(pos_backUp,this.pos)
    }
     // end of string 判断指针是否到头了
     eos() {
        return this.pos >= this.templateStr.length
    }
}